1. Reference to Related Applications
This application is related to copending U.S. patent application Ser. No. 09/967,358 filed Sep. 28, 2001.
This application is related to copending U.S. patent application Ser. No. 09/686,755 filed Oct. 10, 2000, which is a divisional of Ser. No. 09/166,816, filed Oct. 5, 1998.
This application is also related to copending U.S. patent Ser. No. 09/823,208 filed Mar. 30, 2001, which is a division of Ser. No. 09/107,838, filed Jun. 30, 1998, now U.S. Pat. No. 6,237,053.
2. Field of the Invention
The present invention relates to portable computers, such as bar code reader computer terminals connected to wireless networks, and more particularly to the network architecture, operating system APIs, configuration software, and inter-network messaging and communications protocols needed to support communications with “legacy” application programs being executed in modern embedded operating systems in mobile units operated in such networks, and from network to network.
3. Background of the Invention
Computers have evolved to such a degree that portable laptop, handheld, wearable and other small computers and systems with embedded processors have become quite common. Additionally, real time operating systems for use with such computers have been developed which lack much of the processing power and memory requirement of larger computers, and have just enough power and memory to perform specific dedicated tasks or user applications. These computers are used in a number of different applications, including inventory control, word processing, personal file management, web browsing, email, and data collection, or dedicated applications in appliances and other equipment.
Typically, these computers are used with a wide variety of input devices, including keyboards, bar code symbol scanners, imagers or scanners, microphones, digital cameras, and wireless RF communications transceivers, among others. The function of these input devices is to allow information (audio, bar code symbol, video, text, etc.) to be received by the computer and transferred to an application program in a form the application can use. Generally, the task managing these input devices falls on an application program containing routines, which were developed on a case by case basis. For example, a word processor may require input from a keyboard. Therefore, the word processor will be designed with some code routines that cause the word processor to wait for input from a keyboard, and when input is received, to print the input on the screen for displaying to the user.
The Windows CE operating system of Microsoft Corporation is a paradigmatic operating system for use in such classes of applications. Windows CE is highly compartmentalized. The OEM Adaptation Layer (known as the OAL) interfaces the Windows CE kernel and the OEM hardware, and provide platform initialization, interrupt service routines (ISRs), real-time clock (RTC), interval timer, debugging, interrupt enable/disable, and profiling. The Windows CE kernel implements process and thread management, preemptive scheduling, memory management, synchronization mechanism, debugging support, profiling and exception handling.
Third-party devices that are connected through a special port can be directly driven by the native serial driver, or by an OEM driver, for example, applications can directly open “COM1:” which is a port name (syntactically it is a port name since it ends with a colon) and directly communicate with that device, if the application can process the data. Alternatively, an OEM driver may be installed (e.g. COM4:) which internally uses COM1:, but also processes the data and therefore provides applications with a simplified interface.
For instance, consider the application of reading an image from an input device such as a sensor array, such as a camera. If the read operation is done by an application through “COM1:” the application must write the proper code to get the digital image, and read the data back. On the other hand, the application can use a handle, which is a resource identifier. Thus, reading from a camera driver can return a bitmap handle, which is the equivalent of formatted data.
Device drivers are software that allows the operating system to recognize the devices attached to the platform. Device drivers also present device-related services to applications.
There are several different types of drivers including native drivers, stream interface drivers, and Universal Serial Bus (USB) drivers. They can expose a stream interface, a custom set of functions, or rely on the exiting CE API (input-event system and installable file system). The Network Driver Interface Specifications (NDIS) drivers are derived from Windows NT. They allow use of the networking protocol (TCP/IP, IrDA) to be independent of the network interface card (NIC).
Native drivers control low-level devices are built-in with the CE platforms and support such functions as audio, battery, keyboard, notification LED, serial port, touch screen, and the PC Card socket.
One increasingly important type of mobile computer are those which are coupled to or incorporates a bar code symbol reader, and are now in very common use for portable data collection applications. Typically, a bar code symbol comprises one or more rows of light and dark regions, typically in the form of rectangle. The relative widths of the dark regions, the bars and/or the widths of the light regions, the spaces, encode data or information in the symbol. A bar code symbol reader illuminates the symbol and senses light reflected from the regions of differing light reflectivity to detect the relative widths and spacings of the regions and derive the encoded information. Bar code reading data collection application software, executing on such mobile computers, improve the efficiency and accuracy of data input for a wide variety of applications. The ease of data input in such systems facilitates more frequent and detailed data input, for example, to provide efficient taking of inventories, tracking of work in progress, and make use of applications programs that may communicate to and interoperate with other applications programs operating on a remote host or server which the mobile computer communicates with through a wireless network.
Wireless local area networks use infrared or radio frequency communications channels to communicate between portable or mobile computer terminals and stationary access points or base stations. These access points are in turn connected by a wired (or possibly wireless) communication channel to a network infrastructure which connects groups of access points together to form a local area network, including, optionally, one or more servers or host computer systems.